package com.battery.system.service.battery;

import com.battery.system.domain.BO.MerchantBO;
import com.battery.system.domain.Merchant;
import com.battery.system.domain.MerchantIncome;
import com.battery.system.domain.MerchantStatistics;
import com.battery.system.domain.VO.MerchantExcelVO;
import com.battery.system.domain.VO.MerchantVO;
import com.battery.system.service.IBaseService;

import java.util.List;
import java.util.Map;

/**
 * 商户Service接口
 *
 * @author battery
 * @date 2021-01-22
 */
public interface IMerchantService extends IBaseService<Merchant> {
    /**
     * 查询商户
     *
     * @param id 商户ID
     * @return 商户
     */
    public Merchant selectMerchantById(String id);

    /**
     * 查询商户列表
     *
     * @param merchant 商户
     * @return 商户集合
     */
    public List<Merchant> selectMerchantList(Merchant merchant);

    /**
     * 新增商户
     *
     * @param merchant 商户
     * @return 结果
     */
    public int insertMerchant(Merchant merchant);

    /**
     * 修改商户
     *
     * @param merchant 商户
     * @return 结果
     */
    public int updateMerchant(Merchant merchant);

    /**
     * 批量删除商户
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteMerchantByIds(String ids);

    /**
     * 删除商户信息
     *
     * @param id 商户ID
     * @return 结果
     */
    public int deleteMerchantById(String id);


    /**
     * 商户列表
     *
     * @param merchantBO
     * @return
     */
    List<MerchantVO> selectMerchantVOList(MerchantBO merchantBO);

    MerchantVO selectMerchantByphone(String phone);


    MerchantStatistics selectMerchantStatistics(String id);

    MerchantIncome selectMerchantByIncome(Map<String, String> map);

    /**
     * 查询该合作商的直营商户数量
     *
     * @param partnerId
     * @return
     */
    int selectDirectCountByPartnerId(String partnerId);

    /**
     * 逻辑删除商户
     *
     * @param id
     * @return
     */
    int deleteLogic(String id);

    /**
     * 导出商户-门店信息
     *
     * @param merchantBO
     * @return
     */
    List<MerchantExcelVO> selectMerchantExcelVOList(MerchantBO merchantBO);
}
